'''
和文件相关的类定义
'''
from data_define import Record
import json

# 先定义一个抽象类来做顶层设计，确定有哪些功能需要实现
class FileReader:

    def reader_data(self) -> list[Record]:
        """读取文件的数据,将读到的每一条数据都转化为Record对象,将它们都分装到list内返回即可"""
        pass


class TextFileReader(FileReader):
    '''
    用来对text文件的读取。
    '''
    # 初始化文件地址
    def __init__(self,path) -> None:
        self.path = path

    def reader_data(self) -> list[Record]:
        # 打开文件
        f = open(self.path,"r",encoding="UTF-8")
        # 创建列表来存储Record对象
        record_list :list[Record] = []
        for line in f.readlines():
            line = line.strip()     # 消除读取到每一行数据中的\n
            data_list = line.split(",")
            record = Record(data_list[0],data_list[1],data_list[2],data_list[3])
            record_list.append(record) # 添加对象到列表中
        # 关闭文件
        f.close()
        return record_list


class JsonFileReader(FileReader):
    '''
    用来对json文件的读取
    '''
    # 初始化地址
    def __init__(self,path) -> None:
        self.path = path

    def reader_data(self) -> list[Record]:
        # 读取文件
        f = open(self.path,"r",encoding="UTF-8")
        record_list = []
        for line in f.readlines():
            line = line.strip()
            data_dict = json.loads(line)    # 转化为字典
            record = Record(data_dict['date'],data_dict['order_id'],data_dict['money'],data_dict['province'])
            record_list.append(record)

        f.close()
        return record_list

if __name__ == '__main__':
    
    text_file_read = TextFileReader('chapter1(对象)\综合案例(使用面向对象的思想完成)\data\\2011年1月销售数据.txt')
    list1 = text_file_read.reader_data()
    print(list1)
    

